From 56df49971ad9fe74b02f8251c6805c10626f7cdf Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 21 Mar 2019 19:15:24 -0400 Subject: [PATCH] entry: Disconnect text signals in dispose This was showing up as crashes when closing the file chooser. --- gtk/gtkentry.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 499fbe9a84..eafc963790 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -1254,6 +1254,15 @@ connect_text_signals (GtkEntry *entry) g_signal_connect (priv->text, "notify", G_CALLBACK (notify_cb), entry); } +static void +disconnect_text_signals (GtkEntry *entry) +{ + GtkEntryPrivate *priv = gtk_entry_get_instance_private (entry); + + g_signal_handlers_disconnect_by_func (priv->text, activate_cb, entry); + g_signal_handlers_disconnect_by_func (priv->text, notify_cb, entry); +} + static void gtk_entry_init (GtkEntry *entry) { @@ -1278,7 +1287,10 @@ gtk_entry_dispose (GObject *object) gtk_entry_set_completion (entry, NULL); if (priv->text) - gtk_editable_finish_delegate (GTK_EDITABLE (entry)); + { + disconnect_text_signals (entry); + gtk_editable_finish_delegate (GTK_EDITABLE (entry)); + } g_clear_pointer (&priv->text, gtk_widget_unparent); gtk_entry_set_icon_from_paintable (entry, GTK_ENTRY_ICON_PRIMARY, NULL); -- 2.30.2